import axios from 'axios';
import { Toast } from 'antd-mobile';
import {initUser} from 'config/api'
let instance = axios.create({
  withCredentials: true, // 允许携带cookie
  timeout: 15000 // 请求的超时时间
});

/* 返回拦截器
axios的拦截器有个奇怪的设定：如果没有reject则认为成功，即使是在失败回调函数里面也这样。
但有些错误处理（比如登出和断网）希望在拦截器里面处理后不再往外抛，这时需要中断promise，
虽然axios官方不建议这么做，但有个取巧的方案是返回一个空的promise：return new Promise(() => {})
*/
instance.interceptors.response.use(
  function(response) {
    console.log('​response', response);
    if (response.status === 200) {
      return response.data;
    } else {
      console.log('error', response);
    }
  },
  function(error) {
    if (error.response) {
      // 请求已发送，服务器回复状态码在2xx之外
      console.log(11111111111);
      console.error(error.response);
      let { code, msg } = error.response.data;
      if (code === 10000) {
        console.log('app端微信登录');
        if (navigator.userAgent.indexOf('Html5Plus') > -1) {
          plus.oauth.getServices(
            function(services) {
              console.log('​services', services);
              let auths = services;
              auths[0].authorize(function(e){
                alert("授权成功："+JSON.stringify(e));
                initUser(e.code, e.state).then(res => {
									alert("​res"+JSON.stringify(res))

                })
              }, function(e){
                alert("授权失败："+JSON.stringify(e));
              }, {scope:'snsapi_userinfo',state:'mobile',appid:'wxaf33a644198eb3fa'});
              // authLogin(auths[0]);
            },
            function(e) {
              console.log('获取分享服务列表失败：' + e.message + ' - ' + e.code);
            }
          );
          function authLogin(s) {

            if (!s.authResult) {
              s.login(
                function(e) {
                  // 获取登录操作结果
                  var result = e.target.authResult;
                  alert('登录认证成功：' + JSON.stringify(result));
                  authUserInfo(s);
                },
                function(e) {

                  alert('登录认证失败！');
                  alert(JSON.stringify(e))
                },
                {}
              );
            }
          }
          function authUserInfo(s) {
            if (!s.authResult) {
              alert('未登录授权！');
            } else {
              s.getUserInfo(
                function(e) {
                  alert('获取用户信息成功：' + JSON.stringify(s.userInfo));

                  //拿到用户信息，进行相关处理，ajax传用户数据到服务器等
                  var prame = JSON.stringify(s.userInfo);
                },
                function(e) {
                  alert('获取用户信息失败：' + e.message + ' - ' + e.code);
                }
              );
            }
          }
          function authLogout() {
            for (var i in auths) {
              var s = auths[i];
              if (s.authResult) {
                s.logout(
                  function(e) {
                    alert('注销登录认证成功！');
                  },
                  function(e) {
                    alert('注销登录认证失败！');
                  }
                );
              }
            }
          }
        } else {
          Toast.info('未绑定微信的用户第一次不支持在h5浏览器端访问');
        }
      }
    } else if (error.request) {
      // 请求已发送，但没有收到回应
      console.log(22222222222);
      console.error(error.request);
    } else {
      console.log(333333333);
      // 请求尚未发送就失败了，可以认为是某些设置引发的问题（代码问题、跨域、断网）
      // 建议错误在这里拦截处理，中断promise
      // return new Promise(() => {})
      console.error(error);
    }
    return Promise.reject(error);
  }
);

export default instance;
